/**
 * 
 */
package org.ccay.async.task.dao;

import java.util.List;

import org.ccay.async.task.ExportTaskVO;
import org.ccay.core.base.PageVO;
import org.ccay.core.base.PagedResult;
import org.ccay.core.exception.ApplicationException;

public interface IExportTaskDao {

	/**
	 * 删除多个任务
	 * 
	 * @author chaowangbang
	 * @since 2011-12-6
	 * @param exportTaskVOs
	 * @return
	 * @throws ApplicationException
	 */
	public int deleteExportTaskList(List<ExportTaskVO> exportTaskVOs) throws ApplicationException;

	/**
	 * 删除单个任务
	 * 
	 * @author chaowangbang
	 * @since 2011-12-6
	 * @param exportTaskVO
	 * @return
	 * @throws ApplicationException
	 */
	public int deleteExportTask(ExportTaskVO exportTaskVO) throws ApplicationException;

	/**
	 * 通过ID查找任务
	 * 
	 * @author chaowangbang
	 * @since 2011-12-6
	 * @param exportTaskVO
	 * @return
	 */
	public ExportTaskVO findExportTaskById(ExportTaskVO exportTaskVO);

	/**
	 * 分页查找
	 * 
	 * @author chaowangbang
	 * @since 2011-12-6
	 * @param exportTaskVO
	 * @param pageVO
	 * @return
	 */
	public PagedResult<ExportTaskVO> findExportTaskList(ExportTaskVO exportTaskVO, PageVO pageVO)
			throws ApplicationException;

	/**
	 * 过滤模式
	 * 
	 * @author chaowangbang
	 * @since 2013-9-24
	 * @param exportTaskVO
	 * @param pageVO
	 * @return
	 * @throws ApplicationException
	 */
	public PagedResult<ExportTaskVO> findExportTaskListFilter(ExportTaskVO exportTaskVO, PageVO pageVO)
			throws ApplicationException;

	/**
	 * 分页查找，用于导出监控
	 * 
	 * @author chaowangbang
	 * @since 2013-7-22
	 * @param exportTaskVO
	 * @param pageVO
	 * @return
	 * @throws ApplicationException
	 */
	public PagedResult<ExportTaskVO> findExportTaskListMonitor(ExportTaskVO exportTaskVO, PageVO pageVO)
			throws ApplicationException;

	/**
	 * service 创建导出任务
	 * 
	 * @author chaowangbang
	 * @since 2011-12-6
	 * @param exportTaskVO
	 * @return
	 */
	public int createExportTask(ExportTaskVO exportTaskVO);


	/**
	 * 查询任务类型
	 * 
	 * @author chaowangbang
	 * @since 2012-1-16
	 * @return
	 */
	public List<ExportTaskVO> findModuleNameDistinct(ExportTaskVO exportTaskVO);

	/**
	 * 查询任务类型
	 * 
	 * @author chaowangbang
	 * @since 2012-1-16
	 * @return
	 */
	public List<ExportTaskVO> findMonitorModuleNameDistinct(ExportTaskVO exportTaskVO);
	

	/**
	 * 更新导出任务状态和其他信息
	 * 
	 * @author chaowangbang
	 * @since 2012-05-28
	 * @param exportTaskVOs
	 */
	public int updateExportTask(ExportTaskVO exportTaskVO);
}